﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BitLaboratory.DbAccess
{
    public interface IDataAccess
    {
        DataAccess SetCommandText(String commandText);
        DataAccess SetCommandType(CommandType commandType);
        DataAccess AddParameter(String parameterName, object parameterValue);
        DataAccess AddOutputParameter(String parameterName, object parameterValue);
        DataAccess AddInputOutputParameter(String parameterName, object parameterValue);
        DataAccess AddReturnValueParameter();

        DataTable ExecuteFillDataTable();
        int ExecuteNonQuery();

        T ExecuteScalar<T>();
        TEntity ExecuteFillObject<TEntity>() where TEntity : class, new();
        List<TEntity> ExecuteFillObjects<TEntity>() where TEntity : class, new();

        void Reset();
    }
}
